package com.ruoyi.students.service.impl;

import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.education.domain.Score;
import com.ruoyi.students.domain.Students;
import com.ruoyi.students.mapper.StudentsMapper;
import com.ruoyi.students.service.IStudentsService;
import io.lettuce.core.dynamic.annotation.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.security.Security;
import java.util.List;

/**
 * 学生基本信息管理Service业务层处理
 *
 * @author yxy
 * @date 2024-10-17
 */
@Service
public class StudentsServiceImpl implements IStudentsService {
    @Autowired
    private StudentsMapper studentsMapper;

    /**
     * 查询学生基本信息管理
     *
     * @param id 学生基本信息管理主键
     * @return 学生基本信息管理
     */
    @Override
    public Students selectStudentsById(Long id) {
        return studentsMapper.selectStudentsById(id);
    }

    /**
     * 查询学生基本信息管理列表
     *
     * @param students 学生基本信息管理
     * @return 学生基本信息管理
     */
    @Override
    public List<Students> selectStudentsList(Students students) {
        return studentsMapper.selectStudentsList(students);
    }

    /**
     * 新增学生基本信息管理
     *
     * @param students 学生基本信息管理
     * @return 结果
     */
    @Override
    public int insertStudents(Students students) {
        // 密码加密,加密存储
        Students student = studentsMapper.studentloginInfo(students.getStudentId());
        if (student == null) {
            String password = students.getPassword();
            students.setPassword(SecurityUtils.encryptPassword(password));
            return studentsMapper.insertStudents(students);
        } else {
            return 0;
        }
    }

    /**
     * 修改学生基本信息管理
     *
     * @param students 学生基本信息管理
     * @return 结果
     */
    @Override
    public int updateStudents(Students students) {
        return studentsMapper.updateStudents(students);
    }

    /**
     * 批量删除学生基本信息管理
     *
     * @param ids 需要删除的学生基本信息管理主键
     * @return 结果
     */
    @Override
    public int deleteStudentsByIds(Long[] ids) {
        return studentsMapper.deleteStudentsByIds(ids);
    }

    /**
     * 删除学生基本信息管理信息
     *
     * @param id 学生基本信息管理主键
     * @return 结果
     */
    @Override
    public int deleteStudentsById(Long id) {
        return studentsMapper.deleteStudentsById(id);
    }

    /**
     * 根据学生id查询学生成绩信息
     *
     * @param studentId
     * @return
     */
    @Override
    public List<Score> selectStudentsListBystudentId(@Param("studentId") String studentId, @Param("evaluationDate") String evaluationDate) {
        return studentsMapper.selectScoresByStudentId(studentId, evaluationDate);
    }

    /**
     * 学生登录功能
     *
     * @param studentId
     * @param password
     * @return
     */

    @Override
    public String studentloginInfo(String studentId, String password) {
        Students student = studentsMapper.studentloginInfo(studentId);
        String password1 = student.getPassword();
        // ruoyi验证加密密码是否相同的方法
        if (!SecurityUtils.matchesPassword(password, password1)) {
            return "false";
        }
        return "true";
    }

    /**
     * 根据学生id查询学生信息
     *
     * @param studentId
     * @return
     */
    @Override
    public Students selectStudentsByStudentId(String studentId) {
        return studentsMapper.selectStudentsByStudentId(studentId);
    }

    /**
     * 根据学生id修改学生信息
     *
     * @param students
     * @return
     */
    @Override
    public int updateStudentsByStudentid(Students students) {
        return studentsMapper.updateStudentsByStudentid(students);
    }

    @Override
    public String selectStudentClassName(String studentId) {
        return studentsMapper.selectStudentClassName(studentId);
    }

    @Override
    public String selectStudentName(String studentId) {
        return studentsMapper.selectStudentName(studentId);
    }

    public int batchInsertscoreRequests(List<Students> studentsList) {
        // 默认密码
        studentsList.forEach(item -> item.setPassword(SecurityUtils.encryptPassword("123456")));
        return studentsMapper.batchInsertscoreRequests(studentsList);
    }

}
